import type { ApiRequestConfig, AxiosRequestConfig } from 'axios';

/**
 * api 请求参数转换为 axios 请求参数
 * - 将 api 中 params 合并到 url末尾
 * - 将 api 中 query 转换为 params
 */
export function apiRequestConfigToAxiosRequestConfig<T>(
  config: ApiRequestConfig<T>,
): AxiosRequestConfig<T> {
  const { url: u, params: p, query, ...rest } = config;
  let params: string | undefined;
  let url: string = u;
  if (p) {
    params = Array.isArray(p) ? p.join('/') : p.toString();
    url = params.length ? u + '/' + params : u;
  }
  return {
    ...rest,
    url: url,
    params: query,
  };
}
